
local 聊天处理类 = class()

function 聊天处理类:初始化()end
function 聊天处理类:数据处理(id,序号,数据)
  if 序号==6001 then
    self:频道发言处理(玩家数据[id].连接id,id,数据)
  end
end

function 聊天处理类:监控聊天处理(账号,id,等级,名称,频道,文本)
  local 组合语句=时间转换(时间)..format("[账号%s][id%s][%s级][%s][%s]:%s",账号,id,等级,频道,名称,文本)
  for n, v in pairs(聊天监控) do
    发送数据1(n,8,组合语句)
  end
end

function 聊天处理类:频道发言处理(连接id,id,数据)
  local 频道=数据.频道
  local 文本=数据.文本
  local 临时超链接数据 = {}
  if 数据 ~= nil then
    临时超链接数据 = 数据[1]
  end

  self:监控聊天处理(玩家数据[id].账号,id,玩家数据[id].角色.数据.等级,玩家数据[id].角色.数据.名称,频道,文本)
  if string.find(文本,"安全码",1)~=nil then
    local 临时数组=分割文本(文本,"安全码")
    local 密码=临时数组[2]
    if 密码==nil or string.len(密码)~=6 or tonumber(密码)==nil then
      常规提示(id,"#R安全码必须由6位数字组成，请重新设置")
      return
    end
    local 原码=f函数.读配置(程序目录..[[data\]]..玩家数据[id].账号..[[\账号信息.txt]],"账号配置","安全码")
    if 原码=="0" then
      f函数.写配置(程序目录..[[data\]]..玩家数据[id].账号..[[\账号信息.txt]],"账号配置","安全码",密码)
      f函数.写配置(程序目录..[[data\]]..玩家数据[id].账号..[[\账号信息.txt]],"账号配置","安全码修改时间",时间转换(os.time()))
      常规提示(id,"#Y设置安全码成功，请牢记您的安全码，这将作为您账号归属者的凭证")
      f函数.写配置(程序目录..[[data\]]..玩家数据[id].账号..[[\账号信息.txt]],"账号配置","安全码修改ip",玩家数据[id].ip)
      return
    else
      常规提示(id,"#Y你的安全码已经设置过了，无法进行更改")
      return
    end
  end
  if 老八定制 and 玩家数据[id].角色.数据.等级<65 then
    常规提示(id,"#Y你当前的等级低于65级，无法发言")
    return
  end
  if 频道==1 then --当前发言
    if 数据.文本=="清空背包物品" then
      玩家数据[id].道具:清空包裹(连接id,id)
      return
      elseif 数据.文本=="退出战斗" then
      if 玩家数据[id].战斗~=0 and 战斗准备类.战斗盒子[玩家数据[id].战斗]~=nil and 战斗准备类.战斗盒子[玩家数据[id].战斗].战斗类型 ~= 100050 and 战斗准备类.战斗盒子[玩家数据[id].战斗].战斗类型 ~= 100051 and 战斗准备类.战斗盒子[玩家数据[id].战斗].战斗类型 ~= 100052 and 战斗准备类.战斗盒子[玩家数据[id].战斗].战斗类型 ~= 100053 and 战斗准备类.战斗盒子[玩家数据[id].战斗].战斗类型 ~= 100054 and 战斗准备类.战斗盒子[玩家数据[id].战斗].战斗类型 ~= 100130 and 战斗准备类.战斗盒子[玩家数据[id].战斗].战斗类型 ~= 100131 and 战斗准备类.战斗盒子[玩家数据[id].战斗].战斗类型 ~= 100132 and 战斗准备类.战斗盒子[玩家数据[id].战斗].战斗类型 ~= 100133 and 战斗准备类.战斗盒子[玩家数据[id].战斗].战斗类型 ~= 100134 then
        if 玩家数据[id].队伍~=0 and 玩家数据[id].队长 then
          战斗准备类.战斗盒子[玩家数据[id].战斗]:结束战斗(0,玩家数据[id].队伍)
        elseif  玩家数据[id].队伍 == 0 then
          战斗准备类.战斗盒子[玩家数据[id].战斗]:结束战斗(0,id)
        end
      end
      return
    elseif 数据.文本=="开启管理" then
      if f函数.读配置(程序目录..[[data\]]..玩家数据[id].账号..[[\账号信息.txt]],"账号配置","管理") == "1" then
        常规提示(id,"#Y/开启管理模式！")
        玩家数据[id].管理模式 = true
        return
      end
      return
    elseif 数据.文本=="关闭管理" and 玩家数据[id].管理模式 ~= nil and 玩家数据[id].管理模式 == true then
      玩家数据[id].管理模式 = false
      常规提示(id,"#Y/关闭管理模式！")
      return
      elseif 数据.文本=="观察" then
      玩家数据[id].角色:取玩家装备信息(id,id)
    elseif 玩家数据[id].管理模式 ~= nil and 玩家数据[id].管理模式 == true then
        local 管理命令 = 分割文本(数据.文本,"@")
        -- if 管理命令[1] == "czxy"  and 管理命令[2] ~= nil and 管理命令[2] ~= "" and 管理命令[3] ~= nil and 管理命令[3] ~= "" and tonumber(管理命令[3]) ~= nil then
        --   if 玩家数据[id] ~= nil then
        --     local 充值id=管理命令[2]+0
        --     local 充值仙玉=管理命令[3]+0
        --     local 仙玉=f函数.读配置(程序目录..[[data\]]..玩家数据[充值id].账号..[[\账号信息.txt]],"账号配置","仙玉")+管理命令[3]+0
        --     f函数.写配置(程序目录..[[data\]]..玩家数据[充值id].账号..[[\账号信息.txt]],"账号配置","仙玉",仙玉)
        --     常规提示(id,"#Y/仙玉充值成功！")
        --     常规提示(充值id,"#Y/充值仙玉"..充值仙玉.."点请注意查收！")
        --     return
        --   else
        --     常规提示(id,"#Y/充值仙玉需要玩家在线！")
        --     return
        --   end
        -- else
        if 管理命令[1] == "充值点卡"  and 管理命令[2] ~= nil and 管理命令[2] ~= "" and 管理命令[3] ~= nil and 管理命令[3] ~= "" and tonumber(管理命令[3]) ~= nil then
          if 玩家数据[id] ~= nil then
            -- local 充值id=管理命令[2]+0
            -- local 充值点卡=管理命令[3]+0
            -- local 点卡=f函数.读配置(程序目录..[[data\]]..玩家数据[充值id].账号..[[\账号信息.txt]],"账号配置","点卡")+0
            -- if 点卡==nil or 点卡=="空" then
            --     f函数.写配置(程序目录..[[data\]]..玩家数据[充值id].账号..[[\账号信息.txt]],"账号配置","点卡","0")
            -- end
            -- 点卡=(点卡+0)+管理命令[3]
            -- f函数.写配置(程序目录..[[data\]]..玩家数据[充值id].账号..[[\账号信息.txt]],"账号配置","点卡",点卡)
            -- 常规提示(id,"#Y/点卡充值成功！")
            -- 常规提示(充值id,"#Y/充值点卡"..充值点卡.."点请注意查收！")
            -- return
          else
            常规提示(id,"#Y/充值点卡需要玩家在线！")
            return
          end
        -- elseif 管理命令[1] == "增加经验"  and 管理命令[2] ~= nil and 管理命令[2] ~= "" and 管理命令[3] ~= nil and 管理命令[3] ~= "" and tonumber(管理命令[3]) ~= nil then
        --   if 玩家数据[id] ~= nil then
        --     local 充值id=管理命令[2]+0
        --     local 增加经验值=管理命令[3]+0
        --     玩家数据[充值id].角色:添加经验(增加经验值,"测试充值")
        --     常规提示(id,"#Y/经验添加成功！")
        --     常规提示(充值id,"#Y/获得测试经验"..增加经验值.."点！")
        --     return
        --   else
        --     常规提示(id,"#Y/充值经验需要玩家在线！")
        --     return
        --   end
        elseif 管理命令[1] == "增加属性点" and 管理命令[2] ~= nil and 管理命令[2] ~= "" and 管理命令[3] ~= nil and 管理命令[3] ~= "" and tonumber(管理命令[3]) ~= nil then
          -- if 玩家数据[id] ~= nil then
          --   local 充值id=管理命令[2]+0
          --   local 增加潜力=管理命令[3]+0
          --   玩家数据[充值id].角色.数据.潜力=玩家数据[充值id].角色.数据.潜力+增加潜力
          --   常规提示(id,"#Y/潜力添加成功！")
          --   常规提示(充值id,"#Y/获得测试经验"..增加潜力.."点！")
          --   return
          -- else
          --   常规提示(id,"#Y/充值潜力需要玩家在线！")
          --   return
          -- end
        elseif 管理命令[1] == "给予五宝" and 管理命令[2] ~= nil and 管理命令[2] ~= "" then
          -- if 玩家数据[id] ~= nil then
          --   local 充值id=管理命令[2]+0
          --   玩家数据[充值id].道具:给予道具(充值id,玩家数据[充值id].道具:取五宝())
          --   return
          -- end
        elseif 管理命令[1] == "踢出战斗" and 管理命令[2] ~= nil and 管理命令[2] ~= "" then
          if 玩家数据[id] ~= nil then
            local 踢出id=管理命令[2]+0
            if 玩家数据[踢出id].战斗~=0 and 战斗准备类.战斗盒子[玩家数据[踢出id].战斗]~=nil and 战斗准备类.战斗盒子[玩家数据[踢出id].战斗].战斗类型 ~= 100050 and 战斗准备类.战斗盒子[玩家数据[踢出id].战斗].战斗类型 ~= 100051 and 战斗准备类.战斗盒子[玩家数据[踢出id].战斗].战斗类型 ~= 100052 and 战斗准备类.战斗盒子[玩家数据[踢出id].战斗].战斗类型 ~= 100053 and 战斗准备类.战斗盒子[玩家数据[踢出id].战斗].战斗类型 ~= 100054 and 战斗准备类.战斗盒子[玩家数据[id].战斗].战斗类型 ~= 100130 and 战斗准备类.战斗盒子[玩家数据[id].战斗].战斗类型 ~= 100131 and 战斗准备类.战斗盒子[玩家数据[id].战斗].战斗类型 ~= 100132 and 战斗准备类.战斗盒子[玩家数据[id].战斗].战斗类型 ~= 100133 and 战斗准备类.战斗盒子[玩家数据[id].战斗].战斗类型 ~= 100134 then
              if 玩家数据[踢出id].队伍~=0 and 战斗准备类.战斗盒子[玩家数据[踢出id].战斗].执行等待<0 then
                战斗准备类.战斗盒子[玩家数据[踢出id].战斗]:结束战斗(0,玩家数据[踢出id].队伍,"系统")
              else
                战斗准备类.战斗盒子[玩家数据[踢出id].战斗]:结束战斗(0,踢出id,"系统")
              end
            end
            常规提示(id,"#Y/踢出战斗成功！")
            常规提示(踢出id,"#Y/你已经退出战斗了！")
            return
          else
            常规提示(id,"#Y/需要玩家在线！")
            return
          end
        elseif 管理命令[1] == "开启门派闯关" then
          任务处理类:开启门派闯关()
          return
        elseif 管理命令[1] == "开启冠状病毒" then
          任务处理类:开启冠状病毒()
          return
        elseif 管理命令[1] == "开启宝藏山" then
          任务处理类:开启宝藏山()
          return
        elseif 管理命令[1] == "开启镖王活动" then
          任务处理类:开启镖王活动()
          return
        elseif 管理命令[1] == "移动至天宫" then
          地图处理类:跳转地图(id,1111,214,139)
          return
        elseif 管理命令[1] == "吴刚" then
          地图处理类:跳转地图(id,1114,19,61)
          return
        elseif 管理命令[1] == "法明长老" then
          地图处理类:跳转地图(id,1528,29,21)
          return
        elseif 管理命令[1] == "太上老君" then
          地图处理类:跳转地图(id,1113,22,19)
          return
        elseif 管理命令[1] == "玉皇大帝" then
          地图处理类:跳转地图(id,1112,30,35)
          return
        elseif 管理命令[1] == "观音姐姐" then
          地图处理类:跳转地图(id,1141,12,11)
          return
        elseif 管理命令[1] == "镇元子" then
          地图处理类:跳转地图(id,1147,25,20)
          return
        elseif 管理命令[1] == "东海龙王" then
          地图处理类:跳转地图(id,1117,39,25)
          return
        elseif 管理命令[1] == "李世民" then
          地图处理类:跳转地图(id,1044,48,49)
          return
        elseif 管理命令[1] == "程咬金" then
          地图处理类:跳转地图(id,1054,21,21)
          return
        elseif 管理命令[1] == "空度" then
          地图处理类:跳转地图(id,1043,16,13)
          return
        elseif 管理命令[1] == "孙婆婆" then
          地图处理类:跳转地图(id,1143,25,20)
          return
        elseif 管理命令[1] == "地藏王" then
          地图处理类:跳转地图(id,1124,30,24)
          return
        elseif 管理命令[1] == "春十三娘" then
          地图处理类:跳转地图(id,1144,30,42)
          return
        elseif 管理命令[1] == "牛魔王" then
          地图处理类:跳转地图(id,1145,33,21)
          return
        elseif 管理命令[1] == "大大王" then
          地图处理类:跳转地图(id,1134,29,19)
          return
        elseif 管理命令[1] == "小宝箱" then
          地图处理类:跳转地图(id,1202,127,17)
          return
        elseif 管理命令[1] == "开启地煞星任务" then
          任务处理类:开启地煞星任务()
          return
        elseif 管理命令[1] == "开启心魔战斗" then
          任务处理类:开启飞升方寸推荐战斗(id)
          return
        elseif 管理命令[1] == "开启比武报名" then
          开启比武报名()
          return
        elseif 管理命令[1] == "比武进场" then
          开启比武大会进场()
          return
        elseif 管理命令[1] == "开启比武" then
          开启比武大会()
          return
        elseif 管理命令[1] == "结束比武" then
          结束比武大会()
          return
        elseif 管理命令[1] == "开启帮战报名" then
          开启帮战报名()
          return
        elseif 管理命令[1] == "帮战进场" then
          开启帮派竞赛进场()
          return
        elseif 管理命令[1] == "开启帮战" then
          开启帮派竞赛()
          return
        elseif 管理命令[1] == "结束帮战" then
          结束帮派竞赛()
          return
        elseif 管理命令[1] == "开启首席争霸" then
          首席争霸开关=true
          地图处理类:重置首席争霸赛()
          return
        elseif 管理命令[1] == "刷新世界BOSS" then
          任务处理类:刷新世界BOSS()
          return
        elseif 管理命令[1] == "刷出天魔" then
          任务处理类:刷出怒天魇()
          return
        elseif 管理命令[1] == "刷出叛军" then
          任务处理类:刷出叛军()
          return
        elseif 管理命令[1] == "捣乱的年兽" then
          任务处理类:捣乱的年兽()
          return
        elseif 管理命令[1] == "邪恶年兽" then
          任务处理类:邪恶年兽()
          return
        elseif 管理命令[1] == "刷出魔兵" then
          任务处理类:刷出魔域魔兵()
          return
        elseif 管理命令[1] == "七十二地煞" and 七十二地煞星 then
          任务处理类:开启七十二地煞星任务()
          return
        elseif 管理命令[1] == "刷出武将" then
          任务处理类:刷出不屈将魂()
          return
        elseif 管理命令[1] == "魔化" and 魔化取经 then
          任务处理类:刷新魔化取经()
          任务处理类:刷新魔化沙僧()
          return
        elseif 管理命令[1] == "福利怪" then
          任务处理类:刷出摩羯座()
          任务处理类:刷出射手座()
          任务处理类:刷出天蝎座()
          任务处理类:刷出水瓶座()
          任务处理类:刷出白羊座()
          任务处理类:刷出金牛座()
          任务处理类:刷出狮子座()
          任务处理类:刷出处女座()
          任务处理类:刷出天秤座()
          return
        elseif 管理命令[1] == "福利BOSS" then
          任务处理类:刷出新服福利BOSS()
          return
        elseif 老八定制 and 管理命令[1] == "三界魔尊" then
          任务处理类:刷新三界魔尊()
          return
        elseif 管理命令[1] == "游泳比赛" then
          任务处理类:开启游戏比赛()
          return
        elseif 梦幻粉 and 管理命令[1] == "散财童子" then
          任务处理类:刷出散财童子()
          return
        elseif 老七定制 and 管理命令[1] == "神秘钥匙" then
          任务处理类:刷出神秘钥匙怪()
          return
        elseif 福利宝箱 and 管理命令[1] == "福利宝箱" then
          任务处理类:福利宝箱()
          任务处理类:倾国倾城()
          任务处理类:美食专家()
          任务处理类:添加贼王的线索任务(id)
          任务处理类:貔貅的羁绊()
          return
        elseif 管理命令[1] == "怪物攻城" then
          任务处理类:刷出魔族先锋(1173)
          怪物攻城先锋刷新=os.time()
          怪物攻城数据.攻城开关=true
          怪物攻城数据.境外攻城开关=true
          return
        elseif 管理命令[1] == "测试任务" then
          商店处理类:刷新珍品()
          任务处理类:刷出妖魔鬼怪()
          任务处理类:刷出知了王()
          任务处理类:刷出知了先锋()
          任务处理类:刷出小知了王()
          任务处理类:开启地煞星任务()
          任务处理类:捣乱的水果(id)
          任务处理类:设置天庭叛逆(id)
          任务处理类:设置建邺东海小活动(id)
          任务处理类:设置大雁塔怪(id)
          任务处理类:刷新世界BOSS()
          任务处理类:开启天罡星任务()
          return
        end
    end
    if os.time()-玩家数据[id].当前频道<=2 then
      常规提示(id,"#Y/您说话的速度有点快哟！")
      return
    end
    玩家数据[id].当前频道=os.time()
    地图处理类:当前消息广播(玩家数据[id].角色.数据.地图数据,玩家数据[id].角色.数据.名称,文本,临时超链接数据,id)
    if  玩家数据[id].战斗==0 then
      发送数据(连接id,1017,文本)
    else
      local 编号=战斗准备类.战斗盒子[玩家数据[id].战斗]:取参战编号(id,"角色")
      if 编号==nil then
        return
      end
      for n=1,#战斗准备类.战斗盒子[玩家数据[id].战斗].参战玩家 do
        发送数据(战斗准备类.战斗盒子[玩家数据[id].战斗].参战玩家[n].连接id,5512,{id=编号,文本=文本})
      end
    end

  elseif 频道==2 then  --队伍发言
    if 玩家数据[id].队伍==0 then
      常规提示(id,"#Y/你似乎还没有加入任何队伍")
      return
    end

    广播队伍消息(玩家数据[id].队伍,"["..玩家数据[id].角色.数据.名称.."]"..文本,临时超链接数据)
    if  玩家数据[id].战斗==0 then
      发送数据(连接id,1017,文本)
      for n=1,#队伍数据[玩家数据[id].队伍].成员数据 do
        if 队伍数据[玩家数据[id].队伍].成员数据[n]~=id then
          发送数据(玩家数据[队伍数据[玩家数据[id].队伍].成员数据[n]].连接id,1018,{id=id,文本=文本})
        end
      end
    else
      local 编号=战斗准备类.战斗盒子[玩家数据[id].战斗]:取参战编号(id,"角色")
      if 编号==nil then return  end
      for n=1,#队伍数据[玩家数据[id].队伍].成员数据 do
          发送数据(玩家数据[队伍数据[玩家数据[id].队伍].成员数据[n]].连接id,5512,{id=编号,文本=文本})
      end
    end

  elseif 频道==3 then  --世界发言
    local 发言限制=100-玩家数据[id].角色.数据.等级
    if 发言限制<20 then
      发言限制=20
    end
    if os.time()-玩家数据[id].世界频道<=发言限制 then
      常规提示(id,"#Y/您说话的速度有点快哟！")
      return
    elseif 玩家数据[id].角色.数据.等级<20 then
      常规提示(id,"#Y/等级达到20级才可在世界频道发言")
      return
    end
    玩家数据[id].世界频道=os.time()
    广播消息({内容="["..玩家数据[id].角色.数据.名称.."]"..文本,超链=临时超链接数据,频道="sj"})
 elseif 频道==4 then  --门派
    if 玩家数据[id].角色.数据.等级<20 then
      常规提示(id,"#Y/等级达到20级才可在世界频道发言")
      return
    elseif 玩家数据[id].角色.数据.门派 == nil or 玩家数据[id].角色.数据.门派 == "无门派" then
      常规提示(id,"#Y/请加入门派后再在此频道发言。")
      return
    end
    self.门派代号 = 门派代号(玩家数据[id].角色.数据.门派)
    广播门派消息({内容="["..玩家数据[id].角色.数据.名称.."]"..文本,超链=临时超链接数据,频道=self.门派代号},玩家数据[id].角色.数据.门派) --要修改素材为门派
 elseif 频道==9 then  --GM

    if f函数.读配置(程序目录..[[data\]]..玩家数据[id].账号..[[\账号信息.txt]],"账号配置","管理")~="1" then  --账号是否异常
      常规提示(id,"#Y/你没有GM权限！")
      return
    end
     广播消息({内容="["..玩家数据[id].角色.数据.名称.."]"..文本,超链=临时超链接数据,频道="gm"})

  elseif 频道==5 then  --世界发言
    if os.time()-玩家数据[id].传闻频道<=30 then
      常规提示(id,"#Y/您说话的速度有点快哟！")
      return
    elseif 玩家数据[id].角色.数据.等级<20 then
      常规提示(id,"#Y/等级达到20级才可在世界频道发言")
      return
    elseif 玩家数据[id].角色.数据.银子<5000 then
      常规提示(id,"#Y/本频道发言需要消耗5000两银子")
      return
    end
    玩家数据[id].传闻频道=os.time()
    玩家数据[id].角色:扣除银子(5000,0,0,"传闻频道发言",1)
    if 取随机数()<=10 then
      广播消息({内容="["..玩家数据[id].角色.数据.名称.."]"..文本,频道="cw"})
    else
      广播消息({内容="[某人]"..文本,超链=临时超链接数据,频道="cw"})
    end
  elseif 频道==6 then  --世界发言
    if 玩家数据[id].角色.数据.帮派 == "无帮派" or 玩家数据[id].角色.数据.帮派数据 == nil then
      常规提示(id,"#Y/请加入帮派后再在此频道发言。")
      return
    end
    广播帮派消息({内容="["..玩家数据[id].角色.数据.名称.."]"..文本,超链=临时超链接数据,频道="bp"},玩家数据[id].角色.数据.帮派数据.编号)
  end
end
function 聊天处理类:更新(dt)end
function 聊天处理类:显示(x,y)end

return 聊天处理类